package org.example;

import java.io.*;

public class Main {
    public static void main(String[] args) {

        File folder = new File("F:\\dyTest");//文件夹路径

        getAllFilePath(folder);


    }

    public static void getAllFilePath(File srcFile){
        File[] files=srcFile.listFiles();//获取当前目录下所有文件或者目录的File数组
        if (files!=null){//对象存在就执行命令
            for (File file:files){
                if(file.isDirectory()){//判断是否是目录，是就递归调用
                    getAllFilePath(file);
                }else if (file.isFile()){//不是就说明是最后的文件，输出它的绝对路径

//                当前文件路径   c:\\**\**.txt
                        String path = file.getPath();
                        System.out.println(path);
//                新路径   c:\\**\*
                        path =path.substring(0, path.lastIndexOf("."));
//                获取父级 文件夹名
                        String parent = file.getParent();
                        parent = parent.substring(parent.lastIndexOf("\\") + 1, parent.length());
                    String name = file.getName();
                    name=  name.substring(0, name.lastIndexOf("."));
//                    File newlistOfFile = new File("F:\\dyTest"+"\\"+file.getName());//文件夹路径
//                    paste(file,newlistOfFile);
                        if (!name.equals(parent))
                        {

                            File folfPath = new File(path);

                            if (!folfPath.exists() && !folfPath.isDirectory()) {
                                folfPath.mkdirs();
                                System.out.println("创建文件夹");
                            } else {
                                System.out.println("文件夹已存在");
                            }
                            File newlistOfFile = new File(path+"\\"+file.getName());//文件夹路径
                            paste(file,newlistOfFile);
                            System.out.println("File " + name);
                        }



                }
            }
        }
    }

    public static void copy(File file, File fileNew) {
        // 输出流
        OutputStream os = null;
        // 输入流
        InputStream is = null;
        try {
            // 创建新文件
            fileNew.createNewFile();
            // 输出流创建对象
            os = new FileOutputStream(fileNew);
            // 输入流创建对象
            is = new FileInputStream(file);

            // 读取的过程
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = is.read(b)) > 0) {
                // 写的过程
                os.write(b, 0, len);
            }
            // 清空流
            os.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void paste(File file, File fileNew) {
        copy(file, fileNew);
        //判断是都移动成功
        if(fileNew !=null) {
            file.delete();
            System.out.println("移动成功");
        }else {
            System.out.println("移动没有成功");
        }
    }
}
